///*******************************************************************************
// * Copyright (c) 2000, 2006 IBM Corporation and others.
// * All rights reserved. This program and the accompanying materials
// * are made available under the terms of the Eclipse Public License v1.0
// * which accompanies this distribution, and is available at
// * http://www.eclipse.org/legal/epl-v10.html
// *
// * Contributors:
// * IBM Corporation - initial API and implementation
// *******************************************************************************/
//package org.eclipse.ui.tests.datatransfer;
//
//import java.io.IOException;
//import java.io.InputStream;
//import java.net.URL;
//import java.util.ArrayList;
//import java.util.Enumeration;
//import java.util.List;
//import java.util.Properties;
//import java.util.zip.ZipEntry;
//import java.util.zip.ZipFile;
//
//import org.eclipse.core.resources.IContainer;
//import org.eclipse.core.resources.IFile;
//import org.eclipse.core.resources.IProject;
//import org.eclipse.core.resources.IResource;
//import org.eclipse.core.runtime.CoreException;
//import org.eclipse.core.runtime.IPath;
//import org.eclipse.core.runtime.IStatus;
//import org.eclipse.core.runtime.Path;
//import org.eclipse.core.runtime.Platform;
//import org.eclipse.ui.dialogs.IOverwriteQuery;
//import org.eclipse.ui.internal.wizards.datatransfer.TarFile;
//import org.eclipse.ui.internal.wizards.datatransfer.TarLeveledStructureProvider;
//import org.eclipse.ui.internal.wizards.datatransfer.ZipLeveledStructureProvider;
//import org.eclipse.ui.tests.TestPlugin;
//import org.eclipse.ui.tests.harness.util.FileUtil;
//import org.eclipse.ui.tests.harness.util.UITestCase;
//import org.eclipse.ui.wizards.datatransfer.ImportOperation;
//
//public class ImportArchiveOperationTest extends UITestCase implements IOverwriteQuery {
// private static final String DATA_PATH_PREFIX = "data/org.eclipse.datatransferArchives/";
//
// private static final String ARCHIVE_SOURCE_PROPERTY = "archiveSource";
//
// private static final String ARCHIVE_115800_PROPERTY = "bug115800Source";
//
// private static final String rootResourceName = "test.txt";
//
// private static final String[] directoryNames = { "dir1", "dir2" };
//
// private static final String[] fileNames = { "file1.txt", "file2.txt" };
//
// private String localDirectory;
//
// private IProject project;
//
// private URL zipFileURL;
//
// private URL tarFileURL;
//
// public ImportArchiveOperationTest(String testName) {
// super(testName);
// }
//
// /*
// * @see IOverwriteQuery#queryOverwrite(String)
// */
// public String queryOverwrite(String pathString) {
// //Always return an empty String - we aren't
// //doing anything interesting
// return "";
// }
//
// /**
// * Tear down. Delete the project we created and all of the
// * files on the file system.
// */
// protected void doTearDown() throws Exception {
// super.doTearDown();
// try {
// project.delete(true, true, null);
// } catch (CoreException e) {
// fail(e.toString());
// }
// finally{
// localDirectory = null;
// project = null;
// zipFileURL = null;
// tarFileURL = null;
// }
// }
//
// private void setup(String propertyName) throws Exception{
// Class testClass = Class
// .forName("org.eclipse.ui.tests.datatransfer.ImportArchiveOperationTest");
// InputStream stream = testClass.getResourceAsStream("tests.ini");
// Properties properties = new Properties();
// properties.load(stream);
// String zipFileName = properties.getProperty(propertyName);
// localDirectory = zipFileName;
//
// zipFileURL = Platform.asLocalURL(Platform.find(TestPlugin.getDefault().getBundle(),
// new Path(DATA_PATH_PREFIX).append(zipFileName+ ".zip")));
// tarFileURL = Platform.asLocalURL(Platform.find(TestPlugin.getDefault().getBundle(),
// new Path(DATA_PATH_PREFIX).append(zipFileName+ ".tar")));
// }
//
// public void testZipGetStatus() throws Exception {
// setup(ARCHIVE_SOURCE_PROPERTY);
// project = FileUtil.createProject("ImportZipGetStatus");
// ZipFile zipFile = new ZipFile(zipFileURL.getPath());
//
// ZipLeveledStructureProvider structureProvider = new ZipLeveledStructureProvider(zipFile);
//
// Enumeration zipEntries = zipFile.entries();
// List entries = new ArrayList();
// while (zipEntries.hasMoreElements()){
// entries.add(zipEntries.nextElement());
// }
// ImportOperation operation = new ImportOperation(
// new Path(zipFileURL.getPath()), structureProvider.getRoot(),
// structureProvider, this, entries);
//
// closeZipFile(zipFile);
// assertTrue(operation.getStatus().getCode() == IStatus.OK);
// }
//
// public void testTarGetStatus() throws Exception {
// setup(ARCHIVE_SOURCE_PROPERTY);
// project = FileUtil.createProject("ImportTarGetStatus");
// TarFile tarFile = new TarFile(tarFileURL.getPath());
// TarLeveledStructureProvider structureProvider = new TarLeveledStructureProvider(tarFile);
//
// Enumeration tarEntries = tarFile.entries();
// List entries = new ArrayList();
// while (tarEntries.hasMoreElements()){
// entries.add(tarEntries.nextElement());
// }
// ImportOperation operation = new ImportOperation(
// new Path(tarFileURL.getPath()), structureProvider.getRoot(),
// structureProvider, this, entries);
//
// assertTrue(operation.getStatus().getCode() == IStatus.OK);
// }
//
// public void testZipImport() throws Exception {
// setup(ARCHIVE_SOURCE_PROPERTY);
// project = FileUtil.createProject("ImportZip");
// ZipFile zipFile = new ZipFile(zipFileURL.getPath());
// ZipLeveledStructureProvider structureProvider = new ZipLeveledStructureProvider(zipFile);
// zipFile = new ZipFile(zipFileURL.getPath());
// Enumeration zipEntries = zipFile.entries();
// List entries = new ArrayList();
// while (zipEntries.hasMoreElements()){
// ZipEntry entry = (ZipEntry)zipEntries.nextElement();
// if (!entry.isDirectory())
// entries.add(entry);
// }
// ImportOperation operation = new ImportOperation(
// new Path(project.getName()), structureProvider.getRoot(),
// structureProvider, this, entries);
//
// openTestWindow().run(true, true, operation);
// closeZipFile(zipFile);
//
// verifyFiles(directoryNames.length, false);
// }
//
//
// public void testTarImport() throws Exception {
// setup(ARCHIVE_SOURCE_PROPERTY);
// project = FileUtil.createProject("ImportTar");
// TarFile tarFile = new TarFile(tarFileURL.getPath());
// TarLeveledStructureProvider structureProvider = new TarLeveledStructureProvider(tarFile);
//
// Enumeration tarEntries = tarFile.entries();
// List entries = new ArrayList();
// while (tarEntries.hasMoreElements()){
// entries.add(tarEntries.nextElement());
// }
// ImportOperation operation = new ImportOperation(
// new Path(project.getName()), structureProvider.getRoot(),
// structureProvider, this, entries);
//
// openTestWindow().run(true, true, operation);
//
// verifyFiles(directoryNames.length, false);
// }
//
// public void testTarSetOverwriteResources() throws Exception {
// setup(ARCHIVE_SOURCE_PROPERTY);
// project = FileUtil.createProject("ImportTarSetOverwriteResources");
// TarFile tarFile = new TarFile(tarFileURL.getPath());
// TarLeveledStructureProvider structureProvider = new TarLeveledStructureProvider(tarFile);
//
// Enumeration tarEntries = tarFile.entries();
// List entries = new ArrayList();
// while (tarEntries.hasMoreElements()){
// entries.add(tarEntries.nextElement());
// }
// ImportOperation operation = new ImportOperation(
// new Path(project.getName()), structureProvider.getRoot(),
// structureProvider, this, entries);
//
// openTestWindow().run(true, true, operation);
// operation.setOverwriteResources(true);
// openTestWindow().run(true, true, operation);
// verifyFiles(directoryNames.length, false);
// }
//
// public void testZipSetOverwriteResources() throws Exception {
// setup(ARCHIVE_SOURCE_PROPERTY);
// project = FileUtil.createProject("ImporZiprSetOverwriteResources");
// ZipFile zipFile = new ZipFile(zipFileURL.getPath());
// ZipLeveledStructureProvider structureProvider = new ZipLeveledStructureProvider(zipFile);
// zipFile = new ZipFile(zipFileURL.getPath());
// Enumeration zipEntries = zipFile.entries();
// List entries = new ArrayList();
// while (zipEntries.hasMoreElements()){
// ZipEntry entry = (ZipEntry)zipEntries.nextElement();
// if (!entry.isDirectory())
// entries.add(entry);
// }
// ImportOperation operation = new ImportOperation(
// new Path(project.getName()), structureProvider.getRoot(),
// structureProvider, this, entries);
//
// openTestWindow().run(true, true, operation);
// operation.setOverwriteResources(true);
// openTestWindow().run(true, true, operation);
// closeZipFile(zipFile);
// verifyFiles(directoryNames.length, false);
// }
//
// public void testZipWithFileAtRoot() throws Exception {
// setup(ARCHIVE_115800_PROPERTY);
// project = FileUtil.createProject("ImportZipWithFileAtRoot");
// ZipFile zipFile = new ZipFile(zipFileURL.getPath());
// ZipLeveledStructureProvider structureProvider = new ZipLeveledStructureProvider(zipFile);
// zipFile = new ZipFile(zipFileURL.getPath());
// Enumeration zipEntries = zipFile.entries();
// List entries = new ArrayList();
// while (zipEntries.hasMoreElements()){
// ZipEntry entry = (ZipEntry)zipEntries.nextElement();
// if (!entry.isDirectory())
// entries.add(entry);
// }
// ImportOperation operation = new ImportOperation(
// new Path(project.getName()), structureProvider.getRoot(),
// structureProvider, this, entries);
//
// openTestWindow().run(true, true, operation);
// closeZipFile(zipFile);
//
// verifyFiles(directoryNames.length, true);
// }
//
//
// public void testTarWithFileAtRoot() throws Exception {
// setup(ARCHIVE_115800_PROPERTY);
// project = FileUtil.createProject("ImportTarWithFileAtRoot");
// TarFile tarFile = new TarFile(tarFileURL.getPath());
// TarLeveledStructureProvider structureProvider = new TarLeveledStructureProvider(tarFile);
//
// Enumeration tarEntries = tarFile.entries();
// List entries = new ArrayList();
// while (tarEntries.hasMoreElements()){
// entries.add(tarEntries.nextElement());
// }
// ImportOperation operation = new ImportOperation(
// new Path(project.getName()), structureProvider.getRoot(),
// structureProvider, this, entries);
//
// openTestWindow().run(true, true, operation);
//
// verifyFiles(directoryNames.length, true);
//
// }
//
// /**
// * Verifies that all files were imported.
// *
// * @param folderCount number of folders that were imported
// */
// private void verifyFiles(int folderCount, boolean hasRootMembers) {
// try {
// IPath path = new Path(localDirectory);
// IResource targetFolder = project.findMember(path.makeRelative());
//
// assertTrue("Import failed", targetFolder instanceof IContainer);
//
// IResource[] resources = ((IContainer) targetFolder).members();
// if (!hasRootMembers){
// assertEquals("Import failed to import all directories",
// folderCount, resources.length);
// for (int i = 0; i < resources.length; i++) {
// assertTrue("Import failed", resources[i] instanceof IContainer);
// verifyFolder((IContainer) resources[i]);
// }
// }
// else {
// for (int i = 0; i < resources.length; i++){
// if (resources[i] instanceof IContainer)
// verifyFolder((IContainer)resources[i]);
// else
// assertTrue("Root resource is not present or is not present as a file: " + rootResourceName,
// resources[i] instanceof IFile && rootResourceName.equals(resources[i].getName()));
// }
// }
//
// } catch (CoreException e) {
// fail(e.toString());
// }
// }
//
// /**
// * Verifies that all files were imported into the specified folder.
// */
// private void verifyFolder(IContainer folder) {
// try {
// IResource[] files = folder.members();
// assertEquals("Import failed to import all files", fileNames.length,
// files.length);
// for (int j = 0; j < fileNames.length; j++) {
// String fileName = fileNames[j];
// int k;
// for (k = 0; k < files.length; k++) {
// if (fileName.equals(files[k].getName()))
// break;
// }
// assertTrue("Import failed to import file " + fileName,
// k < fileNames.length);
// }
// } catch (CoreException e) {
// fail(e.toString());
// }
// }
//
// private boolean closeZipFile(ZipFile zipFile){
// try{
// zipFile.close();
// }
// catch(IOException e){
// fail("Could not close zip file " + zipFile.getName(), e);
// return false;
// }
// return true;
// }
//}